# -*- coding:utf-8 -*-
# 迭代器 可迭代对象

# 判断是否是可迭代对象
from collections import Iterator
from collections import Iterable

'''
因为和迭代器相比有一个很大的不同，list/truple/map/dict这些数据的大小是确定的，也就是说有多少事可知的。但迭代器不是，迭代器不知道要执行多少次，所以可以理解为不知道有多少个元素，每调用一次next()，就会往下走一步，是惰性的
'''


def fun():
    a = yield
    print(a)


print(isinstance(fun(), Iterable))
print(isinstance(fun(), Iterator))

print(isinstance((), Iterator))
print(isinstance((), Iterable))

# 将list等转换为迭代器
print(type([1, 2, 3]), type(iter([1, 2, 3]))) # <class 'list'> <class 'list_iterator'>
print(type([1, 2, 3]), type(iter((1,2,3)))) # <class 'list'> <class 'tuple_iterator'>
